System and method for optimizing interconnections of memory devices in a multichip module

ABSTRACT

An apparatus and method couples memory devices in a memory module to a memory hub on the module such that signals traveling from the hub to the devices have the same propagation time regardless of which device is involved. The hub receives memory signals from a controller over a high speed data link which the hub translates into electrical data, command and address signals. These signals are applied to the memory devices over busses having equivalent path lengths. The busses may also be used by the memory devices to apply data signals to the memory hub. Such data signals can be converted by the memory hub into memory signals and applied to the controller over the high speed data link. In one example, the memory hub is located in the center of the memory module.

CROSS-REFERENCE TO RELATED APPLICATION

This application is a continuation of U.S. patent application Ser. No. 10/232,842, filed Aug. 29, 2002. This application is incorporated by reference herein in its entirety and for all purposes.

TECHNICAL FIELD

This invention relates generally to computer memory devices. More specifically, the present invention relates to methods and apparatus for eliminating skew between a plurality of memory devices conductively coupled to a memory hub, and allowing for improved signal integrity between the hub and the memory devices.

BACKGROUND OF THE INVENTION

A main focus of the contemporary semiconductor industry is the creation of smaller and more efficient memory modules. These efforts are often frustrated by cross talk and skew. Cross talk is an inductive effect which can arise when a variable current flows through a conductor. Variable current creates a corresponding variable magnetic field surrounding the conductor capable of inducing a disruptive signal in any adjacent conductors passing through the magnetic field. As a consequence, the placement of conductors in a memory module must be carefully engineered in order to maintain suitable distances of separation between conductors to minimize the effects of cross talk.

Skew is differential delay between two signals forced to travel different path lengths. One technique to eliminate skew is to make the path lengths along which signals are coupled the same length. In this way, signal travel time will be the same, thus eliminating any differential delay. Overall, the necessity of such careful considerations in both distancing conductors from each other and in creating equivalent path lengths to minimize the effects of cross talk and skew complicates efforts to create effective memory modules with small dimensions.

Generally, memory modules are comprised of individual memory devices coupled in parallel on a circuit board. These memory devices can be dynamic random access memory (“DRAM”) devices suitable for a wide variety of applications. A partial top plan view of one type of memory module known in the art is shown in FIG. 1. As illustrated, two registered double in-line memory modules (DIMM) 100 a, 100 b include a plurality of memory devices 102-116 arranged on a circuit board 140 and connected by a command/address bus 142 to a register 144. The memory devices 102-116 and the conductors of the command/address bus 142 are situated on the circuit board 140 with enough space between them to minimize any cross talk. The register 144 receives command signals applied through a control bus 146 and address signals applied through an address bus 148 from an external memory controller (not shown).

As illustrated in the registered memory module 100 shown in FIG. 1, the command signals applied to the register 144 include a row address strobe signal (“RAS#”) (the “#” indicates the signal is active low), a column address strobe signal (“CAS#”), clock enable signals (“CKE0” and “CKE7”), a write enable signal (“WE#”) and chip select signals (“S0#”-“S7#”) to activate the DRAM devices 102-116, respectively. Other signals not latched by the register 144 include a clock (“CK0”) signal, data signals (“DQ0-DQ63”) corresponding to an 64-bit data word applied to the modules through a data bus 150, and a number of other signals that are not pertinent to the present discussion. In this registered DRAM module, bank address signals (“B0-B7”) corresponding to an 8-bit bank address and row/column address signals (“A0-A12”) corresponding to a 13-bit address are also applied to the register 144 through the address bus 148.

In operation, when a computer processor reads data from, or writes data to, a specific memory address in a particular memory device 102-116, it sends a signal to the memory controller (not shown) over a host bus (also not shown). The request is analyzed by the memory controller, which applies corresponding address signals A0-A12 and the previously described command signals to the registered DIMMs 100 a-b. These signals are latched into the registers 144 of both of these modules 100 a-b, with each module 100 a-b receiving a different pair of chip select signals designating which of the modules 100 a-b is to be accessed. However, only one of the memory modules 100 a-b is selected for a memory access or for a memory writing by switching its device select signals SO# and S1# active low. An appropriate command signal is then applied to the command/address bus 142 by the register 144 to all of the memory devices 102-116 in the module 100.

During write operations, the command signal includes address signals and command signals enabling the memory controller to access and write to appropriate memory cells in each of the memory devices 102-116. Data bits DQ0-DQ63 from the data bus 150 are then applied over an internal data path (not shown for the sake of clarity) to the memory cells in each of the memory devices 102-116. The internal data path consists of individual traces running from the memory devices 102-116 to signal traces (not shown) on an edge of the circuit board 140. During write operations the register 144 also operates to generate the appropriate command and timing signals to control the memory devices 102-116.

During read operations, the command signal includes address signals and command signals enabling the memory controller to access and read appropriate memory cells in each of the memory devices 102-116. The read data stored in the addressed memory cells are then applied over the internal data path to the data bus 150 and the memory controller as read data bits DQ0-DQ64.

As can be seen in FIG. 1, the off-module command and address signals are applied to the midpoint of the module 100 such that the length of the control bus 146 and the address bus 148 on the module 100 is short. However, since the memory devices 102-116 are disposed on either side of the register 144, the path lengths of the command/address bus 142 to the memory devices 102-116 are of different lengths. As a result, address and command signals coupled from the register 144 to the different memory devices 102-116 are susceptible to skew. For example, the difference in delay in coupling command and address signals from the register 144 to the memory devices 102 and 108 makes it difficult to capture the command and address signals at both memory devices with a common clock signal. This potential for signal skew can seriously limit the operating speed of the memory devices 102-116.

One way to solve this problem is to increase the path lengths of the command/address bus 142 coupled to the devices 104-114 to make them equal to the path length of the command/address bus 142 to the devices 102 and 116. While such a solution is effective in ameliorating skew, it requires the placement of a greater length of conductive lines on the module 100. This consumes more space, increases propagation delay, and may adversely affect signal integrity.

Further, as memory bus speeds continue to increase, a need will arise to buffer data signals, i.e. a data buffer device or devices will be included to perform a similar function for data signals as the register device does for command and address signals. The data buffer function may reside in one or more devices, which may or may not be integrated with the command address register. Seen in this light, modules based on a memory hub having data buffers aligned in the same general layout as shown for the memory devices in FIG. 1 would encounter the same problems for data signals as were described above for command and address signals.

What is needed is a memory module that minimizes skew and maximizes signal integrity between the hub and memory devices as well as between the controller and the module.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram of a portion of a conventional computer system containing a plurality of conventional registered DRAM modules.

FIG. 2 is a block diagram of a portion of a computer system including a controller and a memory module according to one embodiment of the invention.

FIG. 3 is a block diagram of a computer system containing several memory modules such as illustrated in FIG. 2 according to one embodiment of the invention.

FIG. 4 is a block diagram of a computer system containing several memory modules such as illustrated in FIG. 2 coupled directly to each other according to one embodiment of the invention.

DETAILED DESCRIPTION OF THE INVENTION

FIG. 2 is a block diagram of a portion of a computer system according to one embodiment of the invention. A controller 200, such as a system controller or a memory controller, is coupled to a memory module 201 through a high speed memory link 203, although a greater number of modules 201 may be coupled to the controller 200. The controller 200 and the memory module 201 are coupled to the high speed memory link 203 through an interface 204 on the controller 200 and an interface 206 in a memory hub 208 on the module 201, respectively.

The high speed memory link 203 may be configured to carry electrical or optical signals. For example, when an electrical coupling is desired, the high speed memory link 203 may include separate control, address and data buses operable to carry corresponding command, address and data signals between the controller 200 and the module 201. Command signals can include clock signals, masking signals, and various other control signals. Alternately, the high speed memory link 203 may include a greater or lesser number of buses. For example, a single bus may be used to couple one or more packets containing electrical command, address and data bits between the controller 200 and the memory module 201.

When an optical link is desired, the high speed memory link 203 may be configured to enable the controller 200 to communicate with the memory module 201 in any of a variety of communications protocols, but communication using optical signal packets containing data, address and command information is preferred. The high speed memory link 203 may be one or more optical fibers, free space, or some other optical coupling medium that allows light to be transmitted between the controller 200 and the memory module 201.

Additionally, although the high speed memory link 203 may include a single communication link through which command, address and data signals are coupled, it preferably includes several communication links operating in conjunction with each other. For example, a first communication link may be used to couple the data signals between the controller 200 and the memory module 201, and a second communication link may be used to couple command and address signals from the controller 200 to the memory module 201. Moreover, the high speed memory link 203 may be one or more point-to-point links coupling the controller 200 to the memory module 201. Alternately, the high speed memory link 203 may include a mixture of point-to-point links and busses coupling the controller 200 to the memory module 201. Point-to-point links, as discussed herein, should be understood to include high speed connections, conventional wire connections, and other connections known in the art. The high speed memory link 203 may also include a plurality of unidirectional high speed links coupling the controller 200 to the memory module 201. For example, one unidirectional high speed link could carry all signals directed from the controller 200 to the memory module 201, while another unidirectional high speed link could carry all signals from the memory module 201 to the controller 200. As discussed above, each of the unidirectional high speed links could include busses, point-point links or a combination of the two coupling the controller 200 to the memory module 201. In either case, the command, data and address signals are preferably coupled through a conventional communication protocol, such as by sending data packets, time-division multiplexing, etc. Still referring to FIG. 2, the interface 206 in the memory hub 208 receives signals from the high speed data link 203 and develops them into corresponding address, data and command signals to be applied to memory devices 212-226 on the module 201. The memory devices 212-226 on the module 201 may be, for example, synchronous random access memories (“SDRAMs”), and a number greater or less than the eight devices shown in FIG. 2 may be coupled to the memory hub 208. Moreover, it will also be understood that the term “memory device” as used herein can be read to refer to a device operable to buffer data signals, i.e. to perform a similar function for data signals as the register device, as mentioned in the discussion of FIG. 1 above, does for command and address signals.

When the signals applied to the high speed data link 203 are electrical, they are received in the interface 206 of the memory hub 208 and converted into corresponding electrical command, address and data signals suitable for application to the memory devices 212-226 through bus system 230-244. Application of the command, address and data signals to the memory devices 212-226 is done at individual ports (not shown for the sake of clarity) on the memory hub 208 to which the individual busses in the bus system 230-244 are coupled. Accordingly, the memory hub 208 in such a configuration is also operable to receive electrical signals from the memory devices 212-226 and convert the electrical signals into corresponding signals suitable for application to the high speed data link 203.

When the signals applied to the high speed memory link 203 are optical, they must be received in the interface 206. The interface 206 can receive light at any of a plurality of wavelengths λ, and it converts the received light into corresponding electrical command, address and data signals and applies these signals to the memory devices 212-226 over the memory hub 208 and bus system 230-244. The interface 206 also receives electrical signals originating in the memory devices 212-226 which are applied to the bus system 230-244 and received in the memory hub 208. The signals are subsequently coupled from the memory hub 208 to the interface 206 which converts the electrical signals into corresponding optical signals, preferably at any of a plurality of wavelengths λ. These optical signals are coupled to the controller 200 through the high speed memory link 203.

The bus system 230-244 coupling the memory devices 216-226 to the memory module 201 may include, for example, separate command, address and data buses, although it may alternatively include a greater or lesser number of buses running from each memory device 212-226 to the memory hub. For example, a single bus may be used to couple one or more packets containing command, address and data bits between the memory hub 208 and a corresponding memory device 212-226.

Still referring to FIG. 2, the memory hub 208 is placed in the interior of the module 201 such that the individual memory devices 212-226 may be placed along a perimeter of the memory hub 208. In a preferred embodiment, the memory hub 208 is placed at the center of the module 201. Placing the memory hub 208 at the center of the module 201 makes it easier for each individual bus in the bus system 230-244 coupling each memory device 212-226 to the memory hub 208 to be substantially the same length. As a result, travel times for electrical command, address and data signals between each memory device 212-226 and the memory hub 208 are the same regardless of which memory device 212-226 is in communication with the hub 208. Consequently, signals traveling to and from the hub 208 to different memory devices 212-226 do not experience differential delay, and thus skew is eliminated. Additionally, because the memory devices 212-226 are placed along the perimeter of the memory hub 208 the individual busses in the bus system 230-244 can be coupled directly to the memory hub 208 over the shortest path possible between each memory device 212-226 and the memory hub 208. This minimizes path lengths between the memory devices 212-226 and the memory hub, which decreases signal travel times. This also minimizes bus lengths, which minimizes the space on the module 201 required by the bus system 230-244. Moreover, placing the memory hub 208 in the interior of the module 201 is important in that it allows for a greater spacing of the memory devices 212-226 from each other, thus decreasing the potential for cross talk.

In FIG. 2, the memory hub 208 is shown as being substantially rectangular. It should be understood that other geometric shapes, for example circles and triangles, may also be effectively used. In addition, it should be understood that the functioning of the module 208 may also vary. For example, in one aspect, the memory hub 208 receives a signal from the controller 200 over the high speed memory link 203 and converts it into electrical command, address and data signals as discussed above. These signals are subsequently applied simultaneously to all of the individual busses in the bus system 230-244, and because of the equivalent path lengths of the individual busses, are simultaneously received by the individual memory devices 212-226. The memory devices 212-226 then analyze the received command signal for a respective chip select signal encoded within. Each of the memory devices 212-226 has a unique chip select signal enabling the memory hub 208 to access the appropriate memory device 212-226 by including its corresponding unique chip select signal in the command signal sent to all of the memory devices 212-226. The other memory devices 212-226 whose unique chip select signal is not included in the command signal are not enabled, and thus do not react to the command, address and data signals coupled to them by the memory hub 208. Of course, if desired, the command signal may include several chip select signals, allowing a plurality of memory devices 212-226 to act on the same electrical command, address and data signals applied by the memory hub 208 to the bus system 230-244.

During a read operation, the enabled device analyzes control information contained in the command signal as well as address information contained in the address signal to enable the device to access and read appropriate memory cells within itself. The read data stored in the addressed memory cells is then applied over the individual bus in the bus system 230-244 coupling the enabled memory device 212-226 to the memory hub 208. Once received in the memory hub 208, the data signal is converted into a signal suitable to be applied to the high speed memory link 203, and the signal is transmitted to the controller 200 as discussed above.

During a write operation, command, address and data signals are applied to the bus system 230-244 as in the read cycle, with the appropriate memory device, or devices, being enabled by chip select signals contained within the command signal. In the write operation however, the command signal includes an additional write enable signal enabling a selected memory device 212-236 to accept data contained in the data signal and write it to an appropriate memory cell indicated by address information contained in the address signal.

In another aspect, the memory hub 208 may include a multiplexing function. After receiving a memory request from the controller 200 over the high speed memory link 203 and converting it into electrical command, address and data signals as discussed above, the memory hub subsequently examines the electrical command signals for information indicating which memory device 212-226 is to be accessed. Once this information is found and decoded, the memory hub 208 applies the electrical command, address and data signals to the individual bus in the bus system 230-244 that couples the appropriate memory device 212-226 to the memory hub 208.

As with the aspect discussed above, if the command signals include a write enable signal, the memory device 212-226 is enabled to accept the data signals and write them to the appropriate memory cells indicated by address information contained in the address signals. Otherwise, a read operation is initiated and read data signals from appropriate memory cells in the memory device 112-116 are coupled through the individual buses in the bus system 230-244 coupling the memory device 212-226 to the memory hub 208. Once received in the memory hub 208, the data signals are subsequently converted into signals suitable to be applied to the high speed memory link 203, and it is transmitted to the controller 200 as discussed above. It should be understood that in both aspects described above, the memory hub 208 may access a single bit from each memory device 212-226 or multiple bits as desired.

A computer system 300 using the controller 200 and the memory module 201 of FIG. 2, along with an additional memory module 302, according to one example of the invention is shown in FIG. 3. The computer system 300 includes a processor 304 for performing various computing functions, such as executing specific software to perform specific calculations or tasks. The processor 304 includes a processor bus 306 that normally includes an address bus, a control bus, and a data bus. The computer system 300 includes a system controller 310 that is coupled to the processor bus 306. The system controller 310 also includes the controller 200, which is, in turn, coupled to the memory modules 201, 302 through high speed conduits 205, 313 which comprise the high speed memory link 203. It will be understood that the controller 200 may be external to the system controller 310 and coupled to it or some other component in the computer system 300, such as the processor 304. It will also be understood that the high speed link 203 can have a greater or lesser number of high speed conduits than the two shown in FIG. 3. For example, one high speed conduit may couple both the memory modules 210,301 to the controller 200, or alternately, three or more high speed conduits may couple the memory modules 201, 302 to the controller 200.

Turning to FIG. 4, memory modules 201, 302 may be directly coupled to each other by a hub communication link 401 coupling interface 206 to interface 306. The hub communication link 401 may be constructed in any of the variations discussed above in conjunction with the high speed memory link 203, including inter alia, one or more point-to-point links, one or more busses, or a combination of point-to-point links and busses. In operation, the hub communication link 401 may transmit command, address, write data and read data signals between memory modules 201 and 302. For example, command, address and write data signals received in memory module 201 from high speed conduit 205, may be transmitted from memory hub 208 to memory hub 218 by coupling the signals to the high speed hub communication link 401. Alternately, command, address and write data signals received in memory module 302 from high speed conduit 313, may be transmitted from memory hub 218 to memory hub 208 by similarly coupling the signals to the hub communication link 401. Communication between the hubs 208, 218 and the controller 200 proceeds in the same manner as described above in regard to FIG. 2.

Returning to FIG. 3, the computer system 300 also includes one or more input devices 311, such as a keyboard, mouse or game controller, coupled to the processor 304 through the system controller 310 to allow an operator to interface with the computer system 300. Typically, the computer system 300 also includes one or more output devices 312 coupled to the processor 114 through the system controller 310, such output devices typically being a printer or a video terminal. One or more data storage devices 314 are also typically coupled to the processor 304 through the system controller 310 to allow the processor 304 to store data or retrieve data from internal or external storage media (not shown). Examples of typical storage devices 314 include hard and floppy disks, tape cassettes, and compact disk read-only memories (CD-ROMs). The processor 304 is also typically coupled to cache memory 316, which is usually static random access memory (“SRAM”).

From the foregoing it will be appreciated that, although specific embodiments of the invention have been described herein for purposes of illustration, various modifications may be made without deviating from the spirit and scope of the invention. Accordingly, the invention is not limited except as by the appended claims. 

1. A memory module comprising: a plurality of memory devices; and a memory hub coupled to the plurality of memory devices by a respective plurality of busses, wherein each individual one of the plurality of busses has the same physical length and couples a respective one of the plurality of memory devices to the memory hub, wherein the hub is configured to be coupled to a memory hub Of another memory module by a hub communication' link, the hub communication link configured to couple signals between the memory hubs, and wherein the hub communication link is different than the plurality of busses.
 2. The memory module of claim 1, wherein the memory hub comprises an interface, the hub communication link further configured to couple the interface to an interface of another memory hub.
 3. The memory module of claim 1, wherein the hub communication link comprises a point-to-point link.
 4. The memory module of claim 1, wherein each individual one of the plurality of busses spans the shortest path possible between the memory hub and the plurality of memory devices.
 5. The memory module of claim 1, wherein the signals comprise command, address, write data and read data signals.
 6. The memory module of claim 1, wherein the memory hub is configured to be coupled to a controller by a memory link.
 7. The memory module of claim 6, wherein the signals comprise signals coupled from the memory link to the memory hub.
 8. The memory module of claim 7, wherein the memory hub is placed at a center of the memory module.
 9. The memory module of claim 1, wherein the memory devices and the memory hub are supported by a same substrate.
 10. A memory system comprising: a controller; a plurality of memory modules including a first memory module, and a second memory module, individual ones of the plurality of memory modules comprising: a memory hub coupled to the controller and configured to receive data signals from the controller; and a plurality of memory devices wherein the plurality of memory devices are physically equidistant from the memory hub and coupled to the memory hub; a hub communications link coupled to a memory hub of the first memory module and a memory hub of the second memory module, the hub communications link configured to couple signals between the memory hubs; a first data conduit coupled between the controller and the memory hub of the first memory module; and a second data conduit coupled between the controller and the memory hub of the second memory module.
 11. The memory system of claim 10, wherein at least one memory hub comprises: an interface configured to couple to the hub communications link.
 12. The memory system of claim 10, wherein the first data conduit and the second data conduit comprise a memory link.
 13. The memory system of claim 10, wherein at least one of the first data conduit and the second data conduit comprises: a first communication link configured to couple data signals; and a second communication link configured to couple at least one of command and address signals.
 14. The memory system of claim 10, wherein the hub communications link comprises at least one unidirectional bus.
 15. A method of communicating between memory interfaces, the method comprising: coupling a memory request to a first memory hub over a bus; converting the memory request to at least one of command, address or data signals; applying the at least one of command, address or data signals to at least one of a plurality of memory devices, wherein the plurality of memory devices are physically equidistant from the first memory hub; and coupling the at least one of command, address or data signals to a second memory hub over a hub communications link.
 16. The method of claim 15, wherein the at least one of command, address or data signals data comprises at least one of read or write data.
 17. The method of claim 15, said applying comprising: before coupling the at least one of command, address or data signals to a second memory hub, coupling the at least one of command, address or data signals to the plurality of memory devices.
 18. The method of claim 15, said applying comprising: before coupling the at least one of command, address or data signals to a second memory hub, determining if at least one of command, address or data signals is appropriate for at least one of the plurality of memory devices; and coupling the at least one of command, address or data signals to at least one of the plurality of memory devices responsive to the at least one of the plurality of memory devices being appropriate to receive the at least one of command, address or data signals.
 19. The method of claim 15, further comprising: coupling a response signal to a controller over the bus. 